Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.01.2017, 00:45
Профессор
Отправить личное сообщение для smart-create Посмотреть профиль Найти все сообщения от smart-create
 
Регистрация: 25.10.2016
Сообщений: 157

Переключение страниц без обновления страницы
Добрый вечер, только что закончил делать вывод новостей из БД с постраничной разбивкой. Но не могу теперь разобраться как сделать переключение страниц без обновления страницы, делаю следующим образом:
$(".pagination a").click(function(e){ // клик по номеру страницы
	e.preventDefault(); // отменяем обновление
	var url = $(this).attr('href').split('/')[5]; // определяем последний параметр ссылки который был указан в хрефе нажатой "a"
	$('#content').load('feeds/page/'+url+' #content'); // подставляем полученную переменную в ссылку на страницу с блоком которые и нужно обновить на текущей странице
});


И все вроде бы хорошо, обновление происходит, контент подгружается без обновления, вот только сам пейджер (переключатель) страниц не работает. То есть нажимаем мы например на цифру 3 - контент который должен находиться на 3-й странице подтянулся, но пейджер так и остался на первой странице...

вот разметка всего блока:
<div id="content">
	<?php foreach ($post_array as $feeds):?>
		<div class="row feed">
			<div class="col-md-12">
				<div class="info-block">
					<div class="info-text">
						<a href="/feeds/news/<?=$feeds['key_n']?>" target="_blank">
							<div class="news-title-container">
								<h3><span class="color-text"><?=mb_substr($feeds['title'],0,50,'UTF-8')?>...</span></h3>
							</div>
							<div class="news-txt-container">
								<p><?=mb_substr($feeds['txt'],0,300,'UTF-8')?>...</p>
							</div>
							<br>
							<?php if ($feeds['img'] == "") {}else{?>
								<a class="fancyimage" rel="group1" href="/library/img/news/<?=$feeds['img']?>"> 
									<img class="img-news" src="/library/img/news/<?=$feeds['img']?>" alt="Новости превью" />
								</a> 
							<?php }?>
							<span class="mow_news" style="pointer-events:none;">ОТ: <?=$feeds['date']?></span><br>
							<a href="/feeds/news/<?=$feeds['key_n']?>" target="_blank"><span class="mow_news">ЧИТАТЬ ДАЛЕЕ</span></a>
						</a>
					</div>
				</div>
			</div>
		</div>
		<br>
		<br>
	<?php endforeach?>
</div>
<?php echo $this->pagination->create_links();?> // здесь выводиться разметка пейджера


Вот обработчик пейджера на сервере:
//КОНТРОЛЛЕР
function page() {
	$this->load->library('pagination');

	$config['base_url'] = base_url().'feeds/page/';
	$config['total_rows'] = $this->db->count_all('feeds');
	$config['per_page'] = '2'; 
	$config['full_tag_open'] = '<p class="pagination">';
	$config['full_tag_close'] = '</p>';
	$config['first_link'] = '<span class="first_last">ПЕРВАЯ</span>';
	$config['last_link'] = '<span class="first_last">ПОСЛЕДНЯЯ</span>';
	$config['next_link'] = '<i class="fa fa-caret-square-o-right" aria-hidden="true"></i>';
	$config['prev_link'] = '<i class="fa fa-caret-square-o-left" aria-hidden="true"></i>';

	$this->pagination->initialize($config); 
		
	$this->data['post_array'] = $this->main_model->get_feeds($config['per_page'], $this->uri->segment(3));

	$this->load->view('pages/feeds/index', $this->data);
	$this->load->view('pages/rooms/index');
}

// МОДЕЛЬ
function get_feeds($num, $offset){
	$this->db->order_by("id", "desc");
	$query = $this->db->get('feeds',$num, $offset);
	return $query->result_array();
}


И на всякий случай, ссылка на страницу о которой идет речь:
ссылка

У меня есть предположение что выбранный мною метод .load() - это не самое лучшее решение, но другого я увы не знаю, прошу помочь. Буду благодарен за любую помощь
Ответить с цитированием
  #2 (permalink)  
Старый 18.01.2017, 02:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,149

smart-create,
вариант для медитации
$(".pagination").on('click', 'a',function(e){
  e.preventDefault();
  var url = $(this).attr('href').split('/')[5];
  $('#content').load('feeds/page/'+url+' #content>*', function(response, status, xhr) {
  $('.pagination').html($(".pagination a", response) )
});
Ответить с цитированием
  #3 (permalink)  
Старый 18.01.2017, 11:13
Профессор
Отправить личное сообщение для smart-create Посмотреть профиль Найти все сообщения от smart-create
 
Регистрация: 25.10.2016
Сообщений: 157

рони, большое спасибо, действительно работающий вариант но есть у него один изъян, если выбрать какую нибудь страницу (не важно какую) например №2, или просто "Далее", то активная ссылка просто пропадает, на сколько я понимаю скрипт её попросту удаляет из разметки..., не могу понять с чем это связанно, подскажите пожалуйста
Ответить с цитированием
  #4 (permalink)  
Старый 18.01.2017, 17:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,149

smart-create,
$('.pagination').html($(".pagination>*", response) )
Ответить с цитированием
  #5 (permalink)  
Старый 18.01.2017, 19:43
Профессор
Отправить личное сообщение для smart-create Посмотреть профиль Найти все сообщения от smart-create
 
Регистрация: 25.10.2016
Сообщений: 157

рони, все отлично спасибо)

Единственное, если можно я бы попросил вас растолковать мне некоторые моменты в получившемся скрипте, потому как я не могу найти вразумительного ответа в гугле. А конкретно какую функцию выполняет "response", и что значит вот этот синтаксис ">*", - это как в css селекторы наследия и дочерний элемент?
Ответить с цитированием
  #6 (permalink)  
Старый 18.01.2017, 20:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,149

Сообщение от smart-create
это как в css селекторы наследия и дочерний элемент?
да и
response тут контекст, где искать
Сообщение от smart-create
я не могу найти вразумительного ответа в гугле
http://api.jquery.com/jQuery/#jQuery-selector-context
$(".pagination>*", response) найти в ответе сервера дочерние элементы .pagination
Ответить с цитированием
  #7 (permalink)  
Старый 18.01.2017, 20:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,149

smart-create,
$(".pagination>*", response)

тоже самое что
$(response).find(".pagination").html()
Ответить с цитированием
  #8 (permalink)  
Старый 18.01.2017, 21:26
Профессор
Отправить личное сообщение для smart-create Посмотреть профиль Найти все сообщения от smart-create
 
Регистрация: 25.10.2016
Сообщений: 157

рони, большое спасибо! Все более чем понятно. Добра Вам
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как из формы вызывать другую форму без обновления страницы batia Элементы интерфейса 1 02.12.2014 11:39
как выдать сообщение при нажатии обновления страницы strengerst Общие вопросы Javascript 4 22.10.2014 11:32
Отправка и получение данных без обновления страницы h0ck Общие вопросы Javascript 6 28.08.2014 22:50
Ссылка обрабатывается/отображается после обновления страницы Kimtom Общие вопросы Javascript 3 14.04.2014 15:03
Автообновление <div> без перезагрузки страницы Antihrist AJAX и COMET 14 28.07.2008 06:06